G2.7 bound native Dynamic RCB groups to proven G2.3 envelope - #110
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f9b7649e97
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| var boundedMembers = provenEnvelopeMembers > 1 | ||
| ? Math.Min(options.MaxDynamicMembersPerReport, provenEnvelopeMembers) | ||
| : options.MaxDynamicMembersPerReport; |
There was a problem hiding this comment.
Reject invalid envelopes instead of disabling the bound
When an application supplies a deserialized or manually constructed InformationReportProven profile whose envelope has ProvenMemberCount == 1, the native capability validator can still accept its one-member activation/report evidence, but this branch restores the caller's potentially much larger limit. The supposedly envelope-bound planner can then emit an oversized dynamic DataSet and perform the association-destabilizing write this wrapper is meant to prevent; reject the inconsistent profile or apply every positive bound rather than falling back to the configured maximum.
Useful? React with 👍 / 👎.
| /// AR_HYB identity, ProductionEligible state, or polling fallback. Those remain owned by the | ||
| /// existing stable P1.7 planner and its downstream hybrid planner. | ||
| /// </summary> | ||
| public static class MmsGuardedDynamicReportNativeFieldCapabilityEnvelopeBoundRuntimePlanner |
There was a problem hiding this comment.
Record the completed runtime capability in project documentation
This adds a public protocol runtime and unit-tested G2.7 behavior without updating either the engine maturity matrix or changelog, leaving the documented reporting capability and its evidence boundary stale. Record the implemented/unit-tested scope and what remains unvalidated as required for meaningful completed patches.
AGENTS.md reference: AGENTS.md:L119-L123
Useful? React with 👍 / 👎.
Goal
Keep P1.7 general member-capability semantics while preventing runtime Dynamic DataSets from exceeding the physically proven G2.3 member-count envelope.
Change
Adds
MmsGuardedDynamicReportNativeFieldCapabilityEnvelopeBoundRuntimePlanner, a narrow wrapper around the existing stable P1.7 planner.For an authorized native per-IED DataChange + cleanup witness:
Profile.ProvenSafeMemberCount;AR_HYB_<hash>identity, fresh RCB availability, static precedence, polling fallback, and ProductionEligible separation remain unchanged.This matters for field evidence where smaller G2.3 milestones survive but a larger NamedVariableList destabilizes the MMS association. A later runtime must not recreate a DataSet larger than the proven safe envelope.
Regression
The new test requests 5 residual signals with a 2-member proven envelope while generic planner options allow 64 members. Expected runtime result is 3 Dynamic URCB groups
(2,2,1)and zero polling residual, never one oversized 5-member DataSet.